Ext.ns('uft.jf');
/**
 * 放在列表头的简易查询面板
 * @param {} config
 */
uft.jf.QueryFormPanel = function(config){
	Ext.apply(this,config);
	if(!this.grid){
		uft.Utils.showErrorMsg('表格对象是必须的，否则无法执行查询！');
		return;
	}
	if(!this.queryItems){
		uft.Utils.showErrorMsg('查询项不能为空！');
		return;
	}
	this.queryItems.push({
		xtype:'buttongroup',
		frame : false,
		defaults : {
			scale : 'small'
		},
		items:[{
                text : '查询',
				scope : this,
				iconCls : 'btnQuery',
				handler : this.queryHandler
            },{
            	text : '重置',
				scope : this,
				iconCls : 'btnCancel',
				handler : this.resetHandler
            }]
	});
	var len = this.queryItems.length;
	this.dHeight = (parseInt(len/4) + (len%4==0?0:1))*25 + 15;//有些特殊页面超过2行
//	this.dHeight = this.queryItems.length>4?60:35;
	uft.jf.QueryFormPanel.superclass.constructor.call(this,{
		height : this.dHeight,
		labelWidth : 80,
		border : false,
		items : [{
				layout : 'tableform',
				layoutConfig: {columns:4},
				border : false,
				padding : '5px 5px 0',
				defaults:{
					anchor: '97%'
				},      
				items : this.queryItems
			}]
	});
    this.getForm().items.each(function(f) {
    	f.on('specialkey', function(f,e){
			if(e.getKey()==13){ //enter键
				this.queryHandler();
			}else if(Ext.isIE || Ext.isChrome){
				if(e.getKey()==9){
					this.queryHandler();
				}
			}
        },this);
    },this);
};
Ext.extend(uft.jf.QueryFormPanel,uft.extend.form.FormPanel, {
	resetHandler : function(){
		this.doReset();
	},
	doReset : function(){
		this.getForm().reset();
	},
	queryHandler : function(){
		this.doQuery();
	},
	doQuery : function(){
		if(this.getForm().isValid()){
			var values = this.getForm().getFieldValues(false);
			var params = [];
			//组装成[{fieldName:'appCode',condition:'=',value:'1'},{}]格式发送到后台
			for(var key in values){
				var value = values[key];
				if(!value || String(value).trim().length == 0){
					continue;
				}
				var param = {};
				param.fieldName = key;
				param.condition = 'like';
				param.value = value;
				params.push(param);
			}		
			this.reloadGrid(Ext.encode(params));
		}else{
			var errors = this.getErrors();
			if(errors.length!=0){
				uft.Utils.showWarnMsg(Utils.arrayToString(errors,''));
				return false;
			}
		}
	},
	reloadGrid : function(params){
		var ds = this.grid.getStore();
		ds.baseParams[uft.jf.Constants.PUB_PARAMS] = params;
		ds.baseParams['billId'] = null;//对于联查时直接打开单据的情况，重新查询的时候不再将id作为条件
		var options={};
		options.params={};
		options.params[uft.jf.Constants.PUB_PARAMS]=params;
		options.params[ds.defaultParamNames.start]=0;//将起始记录重置为0，重新从第一页开始计算
		options.params[ds.defaultParamNames.limit]=this.grid.pageSize;
		ds.reload(options);
	},
	/**
	 * 返回定义的高度
	 * @return {}
	 */
	getDefineHeight : function(){
		return this.dHeight;
	}
});
